package entidades;

import java.util.List;
import java.util.HashMap;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.google.gson.Gson;

/**
 * @author JFM
 */
public class Pais extends Entidad
	{
	private String nombre;
	private int orden;
	private boolean activo;
	
	static final String NOMBRE_TABLA = "paises";

	static final int ARGENTINA = 1;
	static final int CHILE = 2;
	
	// --- Constructores --- //

	public Pais()
		{ super(); }

	public Pais(int id) throws SQLException
		{ super(id); }

	public Pais(String id) throws SQLException
		{ super(id); }

	public Pais(ResultSet result) throws SQLException
		{ super(result); }

	public Pais(ResultSet result, String prefix) throws SQLException
		{ super(result, prefix); }

	
	// --- Metodos get()/set() --- //

	public String getNombre()
		{ return nombre; }
	public void setNombre(String nombre)
		{ this.nombre = (nombre != null)? nombre : ""; }

	public int getOrden()
		{ return orden; }
	public void setOrden(int orden)
		{ this.orden = orden; }
	public void setOrden(String orden)
		{ try{this.orden = Integer.parseInt(orden);}catch(Exception e) {this.orden = 0;} }

	public boolean isActivo()
		{ return activo; }
	public void setActivo(boolean activo)
		{ this.activo = activo; }
	public void setActivo(String activo)
		{ this.activo = activo != null && ( activo.compareTo("1") == 0 || activo.compareTo("true") == 0); }
	
	@Override
	public String getDescriptor()
		{ return nombre; }

	@Override
	public String toJson()
		{
		HashMap map = new HashMap();
		map.put("id", id);
		map.put("nombre", nombre);
		map.put("activo", activo);
		map.put("orden", orden);
		return new Gson().toJson(map);
		}

	
	// --- Metodos MySQL --- //

	@Override
	public String getNombreTabla()
		{ return NOMBRE_TABLA; }

	public static List<Pais> listar() throws SQLException
		{ return (List) EntidadSimple.listar(Pais.class, NOMBRE_TABLA, "orden ASC"); }

	@Override
	public void leer(ResultSet result, String prefijo) throws SQLException
		{
		this.setId(result.getInt(prefijo + "id"));
		this.setActivo(result.getBoolean(prefijo + "activo"));
		this.setOrden(result.getInt(prefijo + "orden"));
		this.setNombre(result.getString(prefijo + "nombre"));
		}

	@Override
	public void guardar() throws SQLException
		{ throw new UnsupportedOperationException("Not supported yet."); }
	}
